﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using TechControl.BD;
using System.Collections;

namespace TechControl.Presentation
{
    public partial class frm_altEquipamento : frm_default
    {
        frm_listaEquipamento listEquipamento = new frm_listaEquipamento();
        Int64 idEquip = 0;

        public frm_altEquipamento(frm_listaEquipamento sendedListEquipamento, Int64 sendedIdEquip)
        {
            InitializeComponent();
            listEquipamento = sendedListEquipamento;
            idEquip = sendedIdEquip;
        }

        //cancela operação.
        private void bt_cancelar_Click(object sender, EventArgs e)
        {
            this.closeForm();
        }

        //método que busca os valores do resgistro para serem alterados.
        private void callValuesByCod()
        {
            Equipamento result = (Equipamento)EquipamentoDB.getInstance().selectByCodEquip(idEquip)[0];

            txt_codEquipamento.Text = result.codEquipamento.ToString();
            txt_serial.Text = result.serial;
            txt_imei.Text = result.imei;
            cbo_marca.Text = result.marca;
            cbo_modelo.Text = result.modelo;
            cbo_status.Text = result.status;
            txt_descEquipamento.Text = result.descModelo;
            txt_obs.Text = result.obs;
            txt_pat.Text = result.pat;
            cbo_empresa.Text = result.empresa;
        }

        //chama o método que chama os valores e printa nos campos.
        private void frm_altEquipamento_Load(object sender, EventArgs e)
        {
            ArrayList resultado = MarcaDB.getInstance().selectAllMarcas();
            for (int i = 0; i < resultado.Count; i++)
            {
                cbo_marca.Items.Add(resultado[i].ToString());
            }

            callValuesByCod();
        }

        //quando o marca for mudado, carrega no cbo_modelos, os modelos pertencentes aquela marca.
        private void cbo_marca_SelectedValueChanged(object sender, EventArgs e)
        {
            string[] marca = cbo_marca.SelectedItem.ToString().Split('=');
            Int64 marc = Int64.Parse(marca[0].Trim());

            ArrayList result = ModeloDB.getInstance().selectByMarca(marc);
            for (int i = 0; i < result.Count; i++)
            {
                cbo_modelo.Items.Add(result[i]);
            }
        }

        //busca a descrição do item selecionado.
        private void cbo_modelo_SelectedIndexChanged(object sender, EventArgs e)
        {
            string[] model = cbo_modelo.SelectedItem.ToString().Split('=');
            Int64 modelo = Int64.Parse(model[0]);

            string desc = ModeloDB.getInstance().selectDescModelo(modelo);

            txt_descEquipamento.Text = desc;
        }

        //método responsável pela alteração.
        private void updateEquipByCod()
        {
            Int64 codigo = Int64.Parse(txt_codEquipamento.Text);
            string serial = txt_serial.Text;
            string imei = txt_imei.Text;
            string marca = "" ;
            string modelo = "";
            string status = cbo_status.Text;
            string desItem = txt_descEquipamento.Text;
            string obs = txt_obs.Text;
            string date = DateTime.Now.ToString("dd/MM/yyyy");
            string pat = txt_pat.Text;
            string empresa = cbo_empresa.Text;

            if (cbo_marca.Text.Contains("="))
            {
                string[] separa = cbo_marca.SelectedItem.ToString().Split('=');
                marca = separa[1].Trim();
            }
            else
            {
                marca = cbo_marca.Text;
            }

            if (cbo_modelo.Text.Contains("="))
            {
                string[] change = cbo_modelo.SelectedItem.ToString().Split('=');
                modelo = change[1].Trim();
            }
            else
            {
                modelo = cbo_modelo.Text;
            }

            if (EquipamentoDB.getInstance().updateEquipByCod(codigo, serial, imei, marca, modelo, desItem, status, obs, date, pat, empresa))
            {
                MessageBox.Show("Item alterado com sucesso!", "Alteração de Equipamento");
                listEquipamento.loadDadosOnGrid();
                this.closeForm();
            }
            else
            {
                MessageBox.Show("Erro ao Alterar item, contate o suporte técnico!", "Alteração de Equipamento");
            }
        }

        //chama método que efetua alteração
        private void bt_alterar_Click(object sender, EventArgs e)
        {
            updateEquipByCod();
        }

        //evento de leitura automática do leitor de código de barras.
        private void txt_serial_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Convert.ToChar(System.Windows.Forms.Keys.Enter))
            {
                if (txt_serial.Text == "")
                {
                    MessageBox.Show("Insira um Serial para continuar", "Novo Serial");
                    txt_serial.Focus();
                }
                else
                {
                    txt_imei.Focus();
                }
            }
        }

        //evento de leitura automática do leitor de código de barras.
        private void txt_imei_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Convert.ToChar(System.Windows.Forms.Keys.Enter))
            {
                if (txt_imei.Text == "")
                {
                    MessageBox.Show("Insira um IMEI para continuar", "Novo IMEI");
                    txt_imei.Focus();
                }
                else
                {
                    txt_pat.Focus();
                }
            }
        }

        //evento de leitura automática do leitor de código de barras.
        private void txt_pat_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Convert.ToChar(System.Windows.Forms.Keys.Enter))
            {
                if (txt_pat.Text == "")
                {
                    MessageBox.Show("Insira um Patrimonio para continuar", "Novo Patrimonio");
                    txt_pat.Focus();
                }
                else
                {
                    cbo_empresa.Focus();
                }
            }
        }
    }
}
